{
    'variables': {
        'project_dir': ['.'],
        # These headers are part of JavaScriptCore's public API in the Apple Mac build.
        'javascriptcore_publicheader_files': [
            'API/APICast.h',
            'API/APIShims.h',
            'API/JSBase.h',
            'API/JSContextRef.h',
            'API/JSContextRefPrivate.h',
            'API/JSMemoryStatsSCE.h',
            'API/JSObjectRef.h',
            'API/JSObjectRefPrivate.h',
            'API/JSRetainPtr.h',
            'API/JSStringRef.h',
            'API/JSStringRefBSTR.h',
            'API/JSStringRefCF.h',
            'API/JSValueRef.h',
            'API/JSWeakObjectMapRefInternal.h',
            'API/JSWeakObjectMapRefPrivate.h',
            'API/JavaScript.h',
            'API/JavaScriptCore.h',
            'API/OpaqueJSString.h',
            'API/WebKitAvailability.h',
            ],
        'javascriptcore_files': [
            'API/JSBase.cpp',
            'API/JSCallbackConstructor.cpp',
            'API/JSCallbackFunction.cpp',
            'API/JSCallbackObject.cpp',
            'API/JSClassRef.cpp',
            'API/JSContextRef.cpp',
            'API/JSMemoryStatsSCE.cpp',
            'API/JSObjectRef.cpp',
            'API/JSProfilerPrivate.cpp',
            'API/JSScriptRef.cpp',
            'API/JSStringRef.cpp',
            'API/JSStringRefBSTR.cpp',
            'API/JSStringRefCF.cpp',
            'API/JSStringRefQt.cpp',
            'API/JSValueRef.cpp',
            'API/JSWeakObjectMapRefPrivate.cpp',
            'API/OpaqueJSString.cpp',
            'assembler/ARMAssembler.cpp',
            'assembler/ARMv7Assembler.cpp',
            'assembler/LinkBuffer.cpp',
            'assembler/MacroAssembler.cpp',
            'assembler/MacroAssemblerARM.cpp',
            'bytecode/ArrayAllocationProfile.cpp',
            'bytecode/ArrayProfile.cpp',
            'bytecode/CallLinkInfo.cpp',
            'bytecode/CallLinkStatus.cpp',
            'bytecode/CodeBlock.cpp',
            'bytecode/CodeBlockHash.cpp',
            'bytecode/CodeOrigin.cpp',
            'bytecode/CodeType.cpp',
            'bytecode/DFGExitProfile.cpp',
            'bytecode/ExecutionCounter.cpp',
            'bytecode/ExitKind.cpp',
            'bytecode/GetByIdStatus.cpp',
            'bytecode/JumpTable.cpp',
            'bytecode/LazyOperandValueProfile.cpp',
            'bytecode/MethodOfGettingAValueProfile.cpp',
            'bytecode/Opcode.cpp',
            'bytecode/PolymorphicPutByIdList.cpp',
            'bytecode/PreciseJumpTargets.cpp',
            'bytecode/PutByIdStatus.cpp',
            'bytecode/ReduceWhitespace.cpp',
            'bytecode/ResolveGlobalStatus.cpp',
            'bytecode/SamplingTool.cpp',
            'bytecode/SpecialPointer.cpp',
            'bytecode/SpeculatedType.cpp',
            'bytecode/StructureStubClearingWatchpoint.cpp',
            'bytecode/StructureStubInfo.cpp',
            'bytecode/UnlinkedCodeBlock.cpp',
            'bytecode/Watchpoint.cpp',
            'bytecompiler/BytecodeGenerator.cpp',
            'bytecompiler/NodesCodegen.cpp',
            'debugger/Debugger.cpp',
            'debugger/DebuggerActivation.cpp',
            'debugger/DebuggerCallFrame.cpp',
            'dfg/DFGAbstractState.cpp',
            'dfg/DFGArgumentsSimplificationPhase.cpp',
            'dfg/DFGArrayMode.cpp',
            'dfg/DFGAssemblyHelpers.cpp',
            'dfg/DFGBackwardsPropagationPhase.cpp',
            'dfg/DFGByteCodeParser.cpp',
            'dfg/DFGCapabilities.cpp',
            'dfg/DFGCFAPhase.cpp',
            'dfg/DFGCFGSimplificationPhase.cpp',
            'dfg/DFGCommon.cpp',
            'dfg/DFGConstantFoldingPhase.cpp',
            'dfg/DFGCPSRethreadingPhase.cpp',
            'dfg/DFGCSEPhase.cpp',
            'dfg/DFGDCEPhase.cpp',
            'dfg/DFGDisassembler.cpp',
            'dfg/DFGDominators.cpp',
            'dfg/DFGDriver.cpp',
            'dfg/DFGEdge.cpp',
            'dfg/DFGFixupPhase.cpp',
            'dfg/DFGGraph.cpp',
            'dfg/DFGJITCompiler.cpp',
            'dfg/DFGLongLivedState.cpp',
            'dfg/DFGMinifiedNode.cpp',
            'dfg/DFGNode.cpp',
            'dfg/DFGNodeFlags.cpp',
            'dfg/DFGOperations.cpp',
            'dfg/DFGOSREntry.cpp',
            'dfg/DFGOSRExit.cpp',
            'dfg/DFGOSRExitCompiler.cpp',
            'dfg/DFGOSRExitCompiler32_64.cpp',
            'dfg/DFGOSRExitCompiler64.cpp',
            'dfg/DFGOSRExitJumpPlaceholder.cpp',
            'dfg/DFGPhase.cpp',
            'dfg/DFGPredictionInjectionPhase.cpp',
            'dfg/DFGPredictionPropagationPhase.cpp',
            'dfg/DFGRepatch.cpp',
            'dfg/DFGSpeculativeJIT.cpp',
            'dfg/DFGSpeculativeJIT32_64.cpp',
            'dfg/DFGSpeculativeJIT64.cpp',
            'dfg/DFGStructureCheckHoistingPhase.cpp',
            'dfg/DFGThunks.cpp',
            'dfg/DFGTypeCheckHoistingPhase.cpp',
            'dfg/DFGUnificationPhase.cpp',
            'dfg/DFGUseKind.cpp',
            'dfg/DFGValidate.cpp',
            'dfg/DFGValueSource.cpp',
            'dfg/DFGVariableAccessDataDump.cpp',
            'dfg/DFGVariableEvent.cpp',
            'dfg/DFGVariableEventStream.cpp',
            'dfg/DFGVirtualRegisterAllocationPhase.cpp',
            'disassembler/ARMv7/ARMv7DOpcode.cpp',
            'disassembler/ARMv7Disassembler.cpp',
            'disassembler/Disassembler.cpp',
            'disassembler/udis86/udis86.c',
            'disassembler/udis86/udis86_decode.c',
            'disassembler/udis86/udis86_input.c',
            'disassembler/udis86/udis86_itab_holder.c',
            'disassembler/udis86/udis86_syn-att.c',
            'disassembler/udis86/udis86_syn-intel.c',
            'disassembler/udis86/udis86_syn.c',
            'disassembler/UDis86Disassembler.cpp',
            'heap/BlockAllocator.cpp',
            'heap/ConservativeRoots.cpp',
            'heap/CopiedSpace.cpp',
            'heap/CopyVisitor.cpp',
            'heap/DFGCodeBlocks.cpp',
            'heap/GCThread.cpp',
            'heap/GCThreadSharedData.cpp',
            'heap/HandleSet.cpp',
            'heap/HandleStack.cpp',
            'heap/Heap.cpp',
            'heap/HeapStatistics.cpp',
            'heap/HeapTimer.cpp',
            'heap/IncrementalSweeper.cpp',
            'heap/JITStubRoutineSet.cpp',
            'heap/MachineStackMarker.cpp',
            'heap/MarkedAllocator.cpp',
            'heap/MarkedBlock.cpp',
            'heap/MarkedSpace.cpp',
            'heap/MarkStack.cpp',
            'heap/SlotVisitor.cpp',
            'heap/SuperRegion.cpp',
            'heap/VTableSpectrum.cpp',
            'heap/Weak.cpp',
            'heap/WeakBlock.cpp',
            'heap/WeakHandleOwner.cpp',
            'heap/WeakSet.cpp',
            'heap/WriteBarrierSupport.cpp',
            'interpreter/AbstractPC.cpp',
            'interpreter/CallFrame.cpp',
            'interpreter/Interpreter.cpp',
            'interpreter/JSStack.cpp',
            'interpreter/VMInspector.cpp',
            'jit/ClosureCallStubRoutine.cpp',
            'jit/ExecutableAllocator.cpp',
            'jit/ExecutableAllocatorFixedVMPool.cpp',
            'jit/GCAwareJITStubRoutine.cpp',
            'jit/HostCallReturnValue.cpp',
            'jit/JIT.cpp',
            'jit/JITArithmetic.cpp',
            'jit/JITArithmetic32_64.cpp',
            'jit/JITCall.cpp',
            'jit/JITCall32_64.cpp',
            'jit/JITCode.cpp',
            'jit/JITDisassembler.cpp',
            'jit/JITExceptions.cpp',
            'jit/JITOpcodes.cpp',
            'jit/JITOpcodes32_64.cpp',
            'jit/JITPropertyAccess.cpp',
            'jit/JITPropertyAccess32_64.cpp',
            'jit/JITStubRoutine.cpp',
            'jit/JITStubs.cpp',
            'jit/ThunkGenerators.cpp',
            'jit/JITThunks.cpp',
            'jit/JumpReplacementWatchpoint.cpp',
            'llint/LLIntCLoop.cpp',
            'llint/LLIntData.cpp',
            'llint/LLIntEntrypoints.cpp',
            'llint/LLIntExceptions.cpp',
            'llint/LLIntOffsetsExtractor.cpp',
            'llint/LLIntSlowPaths.cpp',
            'llint/LLIntThunks.cpp',
            'llint/LowLevelInterpreter.cpp',
            'parser/Lexer.cpp',
            'parser/Nodes.cpp',
            'parser/Parser.cpp',
            'parser/ParserArena.cpp',
            'parser/SourceProvider.cpp',
            'parser/SourceProviderCache.cpp',
            'profiler/LegacyProfiler.cpp',
            'profiler/Profile.cpp',
            'profiler/ProfileGenerator.cpp',
            'profiler/ProfileNode.cpp',
            'profiler/ProfilerBytecode.cpp',
            'profiler/ProfilerBytecodes.cpp',
            'profiler/ProfilerBytecodeSequence.cpp',
            'profiler/ProfilerCompilation.cpp',
            'profiler/ProfilerCompilationKind.cpp',
            'profiler/ProfilerCompiledBytecode.cpp',
            'profiler/ProfilerDatabase.cpp',
            'profiler/ProfilerOrigin.cpp',
            'profiler/ProfilerOriginStack.cpp',
            'profiler/ProfilerOSRExit.cpp',
            'profiler/ProfilerOSRExitSite.cpp',
            'profiler/ProfilerProfiledBytecodes.cpp',
            'runtime/ArgList.cpp',
            'runtime/Arguments.cpp',
            'runtime/ArrayConstructor.cpp',
            'runtime/ArrayPrototype.cpp',
            'runtime/BooleanConstructor.cpp',
            'runtime/BooleanObject.cpp',
            'runtime/BooleanPrototype.cpp',
            'runtime/CallData.cpp',
            'runtime/CodeCache.cpp',
            'runtime/CodeSpecializationKind.cpp',
            'runtime/CommonIdentifiers.cpp',
            'runtime/Completion.cpp',
            'runtime/ConstructData.cpp',
            'runtime/DateConstructor.cpp',
            'runtime/DateConversion.cpp',
            'runtime/DateInstance.cpp',
            'runtime/DatePrototype.cpp',
            'runtime/Error.cpp',
            'runtime/ErrorConstructor.cpp',
            'runtime/ErrorInstance.cpp',
            'runtime/ErrorPrototype.cpp',
            'runtime/ExceptionHelpers.cpp',
            'runtime/Executable.cpp',
            'runtime/FunctionConstructor.cpp',
            'runtime/FunctionExecutableDump.cpp',
            'runtime/FunctionPrototype.cpp',
            'runtime/GCActivityCallback.cpp',
            'runtime/GCActivityCallbackBlackBerry.cpp',
            'runtime/GetterSetter.cpp',
            'runtime/Identifier.cpp',
            'runtime/IndexingType.cpp',
            'runtime/InitializeThreading.cpp',
            'runtime/InternalFunction.cpp',
            'runtime/JSActivation.cpp',
            'runtime/JSAPIValueWrapper.cpp',
            'runtime/JSArray.cpp',
            'runtime/JSBoundFunction.cpp',
            'runtime/JSCell.cpp',
            'runtime/JSChunk.cpp',
            'runtime/JSCJSValue.cpp',
            'runtime/JSDateMath.cpp',
            'runtime/JSFunction.cpp',
            'runtime/JSGlobalObject.cpp',
            'runtime/JSGlobalObjectFunctions.cpp',
            'runtime/JSLock.cpp',
            'runtime/JSNameScope.cpp',
            'runtime/JSNotAnObject.cpp',
            'runtime/JSObject.cpp',
            'runtime/JSONObject.cpp',
            'runtime/JSPropertyNameIterator.cpp',
            'runtime/JSProxy.cpp',
            'runtime/JSScope.cpp',
            'runtime/JSSegmentedVariableObject.cpp',
            'runtime/JSStaticScopeObject.cpp',
            'runtime/JSString.cpp',
            'runtime/JSStringJoiner.cpp',
            'runtime/JSSymbolTableObject.cpp',
            'runtime/JSVariableObject.cpp',
            'runtime/JSWithScope.cpp',
            'runtime/JSWrapperObject.cpp',
            'runtime/LiteralParser.cpp',
            'runtime/Lookup.cpp',
            'runtime/MathObject.cpp',
            'runtime/MemoryStatistics.cpp',
            'runtime/NameConstructor.cpp',
            'runtime/NameInstance.cpp',
            'runtime/NamePrototype.cpp',
            'runtime/NativeErrorConstructor.cpp',
            'runtime/NativeErrorPrototype.cpp',
            'runtime/NumberConstructor.cpp',
            'runtime/NumberObject.cpp',
            'runtime/NumberPrototype.cpp',
            'runtime/ObjectConstructor.cpp',
            'runtime/ObjectPrototype.cpp',
            'runtime/Operations.cpp',
            'runtime/Options.cpp',
            'runtime/PropertyDescriptor.cpp',
            'runtime/PropertyNameArray.cpp',
            'runtime/PropertySlot.cpp',
            'runtime/PropertyTable.cpp',
            'runtime/PrototypeMap.cpp',
            'runtime/RegExp.cpp',
            'runtime/RegExpCache.cpp',
            'runtime/RegExpCachedResult.cpp',
            'runtime/RegExpConstructor.cpp',
            'runtime/RegExpMatchesArray.cpp',
            'runtime/RegExpObject.cpp',
            'runtime/RegExpPrototype.cpp',
            'runtime/SamplingCounter.cpp',
            'runtime/SmallStrings.cpp',
            'runtime/SparseArrayValueMap.cpp',
            'runtime/StrictEvalActivation.cpp',
            'runtime/StringConstructor.cpp',
            'runtime/StringObject.cpp',
            'runtime/StringPrototype.cpp',
            'runtime/StringRecursionChecker.cpp',
            'runtime/Structure.cpp',
            'runtime/StructureChain.cpp',
            'runtime/StructureRareData.cpp',
            'runtime/SymbolTable.cpp',
            'runtime/VM.cpp',
            'runtime/Watchdog.cpp',
            'runtime/WatchdogMac.cpp',
            'runtime/WatchdogNone.cpp',
            'tools/CodeProfile.cpp',
            'tools/CodeProfiling.cpp',
            'yarr/YarrCanonicalizeUCS2.cpp',
            'yarr/YarrInterpreter.cpp',
            'yarr/YarrJIT.cpp',
            'yarr/YarrPattern.cpp',
            'yarr/YarrSyntaxChecker.cpp',
            ],

        'javascriptcore_detached_source_files' : [
            'assembler/LinkBuffer.cpp',
            'bytecode/ArrayProfile.cpp',
            'bytecode/CodeBlock.cpp',
            'bytecode/ExecutionCounter.cpp',
            'bytecode/GetByIdStatus.cpp',
            'bytecode/PutByIdStatus.cpp',
            'bytecode/LazyOperandValueProfile.cpp',
            'bytecode/MethodOfGettingAValueProfile.cpp',
            'bytecode/PolymorphicPutByIdList.cpp',
            'bytecode/SpecialPointer.cpp',
            'bytecode/SpeculatedType.cpp',
            'bytecode/StructureStubClearingWatchpoint.cpp',
            'bytecode/StructureStubInfo.cpp',
            'bytecode/Watchpoint.cpp',
            'dfg/DFGAbstractState.cpp',
            'dfg/DFGArrayMode.cpp',
            'dfg/DFGAssemblyHelpers.cpp',
            'dfg/DFGJITCompiler.cpp',
            'dfg/DFGMinifiedNode.cpp',
            'dfg/DFGNode.cpp',
            'dfg/DFGOSRExitCompiler.cpp',
            'dfg/DFGOSRExitCompiler32_64.cpp',
            'dfg/DFGOSRExitCompiler64.cpp',
            'dfg/DFGOSRExit.cpp',
            'dfg/DFGOSRExitJumpPlaceHolder.cpp',
            'dfg/DFGRepatch.cpp',
            'dfg/DFGSpeculativeJIT.cpp',
            'dfg/DFGSpeculativeJIT32_64.cpp',
            'dfg/DFGSpeculativeJIT64.cpp',
            'dfg/DFGThunks.cpp',
            'dfg/DFGVariableEventStream.cpp',
            'heap/JITStubRoutineSet.cpp',
            'interpreter/Interpreter.cpp',
            'jit/ClosureCallStubRoutine.cpp',
            'jit/ExecutableAllocator.cpp',
            'jit/ExecutableAllocatorFixedVMPool.cpp',
            'jit/GCAwareJITStubRoutine.cpp',
            'jit/JIT.cpp',
            'jit/JITArithmetic.cpp',
            'jit/JITArithmetic32_64.cpp',
            'jit/JITCall.cpp',
            'jit/JITCall32_64.cpp',
            'jit/JITOpcodes.cpp',
            'jit/JITOpcodes32_64.cpp',
            'jit/JITPropertyAccess.cpp',
            'jit/JITPropertyAccess32_64.cpp',
            'jit/JITStubRoutine.cpp',
            'jit/JITThunks.cpp',
            'jit/JumpReplacementWatchpoint.cpp',
            'jit/ThunkGenerators.cpp',
            'jit_detached/JITStubEntries.cpp',
            'jit_detached/JSCBridgeComp.cpp',
            'jit_detached/JSCBridge.cpp',
            'jit_detached/JSCBridgeToll.cpp',
            'llint/LLIntThunks.cpp',
            'profiler/ProfilerOSRExit.cpp',
            'runtime/CodeSpecializationKind.cpp',
            'runtime/InitializeThreading.cpp',
            'runtime/Executable.cpp',
            'runtime/Executable.h',
            'runtime/JSCJSValue.cpp',
            'runtime/JSFunction.cpp',
            'runtime/JSGlobalObject.cpp',
            'runtime/JSString.cpp',
            'runtime/Operations.cpp',
            'runtime/Options.cpp',
            'runtime/Structure.cpp',
            'runtime/StructureChain.cpp',
            'runtime/SymbolTable.cpp',
            'runtime/Watchdog.cpp',
            'yarr/YarrCanonicalizeUCS2.cpp',
            'yarr/YarrJIT.cpp',
            'yarr/YarrPattern.cpp',
            'Logging.cpp',
            ],

        'javascriptcore_proxy_source_files' : [
            'dfg_detached/DFGJITCompilerProxy.cpp',
            'dfg_detached/DFGOSRExitCompilerProxy.cpp',
            'dfg_detached/DFGRepatchProxy.cpp',
            'dfg_detached/DFGThunksProxy.cpp',
            'jit_detached/JSCBridgeVM.cpp',
            'jit_detached/JSCBridge.cpp',
            'jit_detached/JSCBridgeToll.cpp',
            'jit_detached/JITPropertyAccessProxy.cpp',
            'jit_detached/JITProxy.cpp',
            'jit_detached/JITStubEntries.cpp',
            'jit_detached/MacroAssemblerX86_64Proxy.cpp',
            'jit_detached/ThunkGeneratorsProxy.cpp',
            'jit_detached/YarrJITProxy.cpp',
            'jit/ExecutableAllocator.cpp',
            'jit/ExecutableAllocatorFixedVMPool.cpp',
            'llint_detached/LLIntThunksProxy.cpp',
            ],

        'javascriptcore_derived_source_files' : [
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ArrayConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ArrayPrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/BooleanPrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/DateConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/DatePrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ErrorPrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/JSGlobalObject.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/JSONObject.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/KeywordLookup.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/Lexer.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/MathObject.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/NamePrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/NumberConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/NumberPrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/ObjectConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpJitTables.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpObject.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/RegExpPrototype.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/StringConstructor.lut.h',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/udis86_itab.c',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/udis86_itab.h',
            ],

        'jsc_files' : [
            'jsc.cpp',
            ],

        'jscore_include_dirs' : [
            '.',
            '..',
            'API',
            'assembler',
            'bytecode',
            'bytecompiler',
            'debugger',
            'dfg',
            'disassembler',
            'disassembler/udis86',
            'ForwardingHeaders',
            'heap',
            'interpreter',
            'jit',
            'jit_detached',
            'llint',
            'parser',
            'profiler',
            'runtime',
            'tools',
            'yarr',
            '<(PRODUCT_DIR)/DerivedSources/JavaScriptCore/',
            '<(PRODUCT_DIR)/DerivedSources/LLInt/$(Configuration)',
            ],
        }
    }
